/**
 * Author@ Cheng Feitian
 * Date: 2021-4-4
 * Description: 继承中同名成员处理
 */

#include <algorithm>
#include <iostream>
#include <string>

using namespace std;
const int maxn = 1024;

//继承中同名成员处理
class Base
{
public:
    int m_A;

    Base()
    {
        m_A = 100;
    }

    void func()
    {
        cout << "Base - func()函数调用" << endl;
    }

    void func(int a){
        cout << "Base - func(int a)函数调用" << endl;
    }
};

class Son : public Base
{
public:
    int m_A;
    Son()
    {
        m_A = 200;
    }

    void func()
    {
        cout << "Son - func()函数调用" << endl;
    }
};

void test01()
{
    Son son;
    cout << "son m_A = " << son.m_A << endl;
    //如果通过子类对象 访问到父类中同名成员 需要加作用域
    cout << "Base m_A = " << son.Base::m_A << endl;

    son.func();         //直接调用 调用是子类中的同名成员
    son.Base::func();   
    
    //如果子类中出现和父类同名的成员函数，子类的同名成员会隐藏掉父类中的所有同名成员函数
    //如果想访问到父类中被隐藏的同名成员函数，需要加作用域
    son.Base::func(100);
}

int main()
{
    test01();
    return 0;
}
